Crate ethers

source ·
Expand description

§ethers-rs

A complete Ethereum and Celo Rust library.

This crate is in the process of being deprecated. See #2667 for more information.

§Quickstart: prelude

A prelude is provided which imports all the important data types and traits for you. Use this when you want to quickly bootstrap a new project.

use ethers::prelude::*;

Examples on how you can use the types imported by the prelude can be found in the examples directory of the repository and in the tests/ directories of each crate.

§Modules

The following paragraphs are a quick explanation of each module in ascending order of abstraction. More details can be found in the book.

§core

Contains all the necessary data structures for interacting with Ethereum, along with cryptographic utilities for signing and verifying ECDSA signatures on secp256k1. Bindings to the Solidity compiler, Anvil and Ganace are also provided as helpers. To simplify your imports, consider using the re-exported modules described in the next subsection.

§utils, types, abi

These are re-exports of the utils, types and abi modules from the core crate.

§providers

Contains the Provider struct, an abstraction of a connection to the Ethereum network, which alongside the Middleware trait provides a concise, consistent interface to standard Ethereum node functionality,

§signers

Provides a Signer trait which can be used for signing messages or transactions. A Wallet type is implemented which can be used with a raw private key or a YubiHSM2. Ledger and Trezor support are also provided.

§contract

Interacting with Ethereum is not restricted to sending or receiving funds. It also involves using smart contracts, which can be thought of as programs with persistent storage.

Interacting with a smart contract requires broadcasting carefully crafted transactions where the data field contains the function’s selector along with the arguments of the called function. This module provides the Contract and ContractFactory abstractions so that you do not have to worry about that.

It also provides typesafe bindings via the abigen macro and the Abigen builder.

§middleware

In order to keep the ethers architecture as modular as possible, providers define a Middleware trait which defines all the methods to interact with an Ethereum node. By implementing the middleware trait, you are able to override the default behavior of methods and do things such as using other gas oracles, escalating your transactions’ gas prices, or signing your transactions with a Signer. The middleware architecture allows users to either use one of the existing middleware, or they are free to write on of their own.

Re-exports§

  • pub use ethers_core::abi;
  • pub use ethers_core::types;
  • pub use ethers_core::utils;

Modules§